'''
士兵开枪
需求：1、士兵瑞恩有一把AK47
2、士兵可以开火（士兵开火扣动的是扳机）
3、枪能够发射子弹（把子弹发射出去）
4、枪能够装填子弹--增加子弹的数量
'''
'''
需求分析：
定义类：士兵类
        属性:
            1、士兵名字   初始值“瑞恩”   字符串
        方法：
            开火(枪对象)

       枪类
        属性：
            1、枪名     从外界获取      gun_name
            2、子弹数量    从外界获取     gun_number
        方法：
            1、发射子弹(子弹数量)
                如果枪中有子弹，发射
                    发射一枚，少一枚
                如果枪中没有子弹：
                    没有子弹了
                否则
                    输入有误
            2、装填子弹(子弹数量)
                装填一枚，多一枚
'''


class Gun():
    def __init__(self, gun_name):
        self.gun_name = gun_name
        self.gun_number = 0

    def biu(self):
        if self.gun_number > 0:
            self.gun_number -= 1
            print(f"枪发射了子弹，子弹剩余{self.gun_number}枚")
        else:
            print("枪内没子弹了！")

    def fill(self):
        self.gun_number += 5

    def __str__(self):
        return f"枪装填了子弹，子弹剩余{self.gun_number}枚"


class Person():
    def __init__(self, name):
        self.name = name

    def biubiu(self, gun):
        print(f"士兵{self.name}开火")
        self.gun=gun
        self.gun.biu()
    def fill1(self,gun):
        self.gun=gun
        self.gun.fill()


if __name__ == '__main__':
    AK47 = Gun('AK47')
    p = Person("瑞恩")
    p.biubiu(AK47)
    p.fill1(AK47)